package cn.asura.mapper;

import cn.asura.pojo.Blog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author Asura
 * @description
 * @createTime 2020-09-21 09:57
 */
@Mapper
public interface BlogMapper {
    /**
     * 查询全部的 blog，最新：按时间倒序；最热：按流览量倒序
     * @param type 排序规则
     * @return blog 列表
     */
    List<Blog> getBlogsByRule(@Param("type") String type);

    /**
     * 根据博客类型 id 查询博客
     * @param blogTypeId 博客类型 id
     * @return 博客列表
     */
    List<Blog> findByBlogTypeId(int blogTypeId);

    /**
     * 根绝条件查询博客
     * @param id id
     * @param queryTitle title
     * @param blogTypeId type id
     * @param startTime 起始时间
     * @param endTime 终止时间
     * @return 博客列表
     */
    List<Blog> findAll(@Param("id") int id, @Param("queryTitle") String queryTitle,
                       @Param("blogTypeId") String blogTypeId,
                       @Param("startTime") String startTime,
                       @Param("endTime") String endTime);

    /**
     * 创建新的 blog
     * @param blog 新的 blog
     * @return 受影响行数
     */
    int create(Blog blog);

    /**
     * 通过 id 查询 blog
     * @param blogId blog id
     * @return blog
     */
    Blog findByBlogId(int blogId);

    /**
     * 更新博客
     * @param blog blog
     * @return 受影响行数
     */
    int update(Blog blog);

    /**
     * 删除博客
     * @param blogId blog id
     * @return 受影响行数
     */
    int delete(int blogId);

    /**
     * 添加访问量
     * @param blogId blog id
     */
    void addView(int blogId);
}
